package top.szhome.framework.starter.db.support;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 基础实体定义
 *
 * @author 唐加利
 * @date 2023/7/24
 **/
@Data
public class BaseEntity implements Serializable {

    /**
     * 序列号
     */
    private static final Long serialVersionUID = 1L;

    /**
     * 主键ID
     *
     * 指定JSON序列号器，解决前端接收雪花算法生成的ID出现精度缺失问题
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private String createUser;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 删除时间
     */
    @TableLogic(value = "0", delval = "id")
    private Boolean deleted;
}
